package ntd.remote.file;

import ntd.remote.file.bo.ComRemoteFileBO;
import ntd.remote.file.impl.ComRemoteFileImpl;

import java.io.InputStream;
import java.util.List;

/**
 * 远程文件处理
 */
public interface ComRemoteFile {

    public ComRemoteFile me = new ComRemoteFileImpl();

    /**
     * 文件移动 - 默认覆盖原文件
     * @param sourceFileBO 文件来源
     * @param targetFileBO 目标文件
     */
    void move(ComRemoteFileBO sourceFileBO, ComRemoteFileBO targetFileBO);


    /**
     * 文件拷贝 - 默认覆盖原文件
     * @param sourceFileBO 文件来源
     * @param targetFileBO 目标文件
     */
    void copy(ComRemoteFileBO sourceFileBO, ComRemoteFileBO targetFileBO);


    /**
     * 文件删除
     * @param targetFileBO 文件
     */
    void del(ComRemoteFileBO targetFileBO);

    /**
     * 文件新增 - 默认覆盖原文件
     * @param targetFileBO 文件
     */
    void add(ComRemoteFileBO targetFileBO, byte[] bytes);

    /**
     * 文件读取
     *
     * @param targetFileBO
     * @return
     */
    byte[] readFile(ComRemoteFileBO targetFileBO);

    /**
     * 文件列表
     * - 不包含文件夹
     * - 包含所有子目录文件
     * @param targetFileBO
     * @return
     */
    List<ComRemoteFileBO> loopListFiles(ComRemoteFileBO targetFileBO);

}
